package com.mall.db.api;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mall.db.mapper.PmsProductCategoryMapper;
import com.mall.pojo.PmsProductCategory;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

@DubboService
public class PmsProductCategoryApiAmpl implements PmsProductCategoryApi {

    @Autowired
    private PmsProductCategoryMapper pmsProductCategoryMapper;

    //添加商品分类
    @Override
    public void create(PmsProductCategory pmsProductCategory) {
        pmsProductCategoryMapper.insert(pmsProductCategory);
    }

    //删除商品分类
    @Override
    public void delete(Integer id) {
        pmsProductCategoryMapper.deleteById(id);
    }

    //分页获取所有商品属性分类
    @Override
    public Page<PmsProductCategory> list(Integer parentId, Integer pageNum, Integer pageSize) {
        Page<PmsProductCategory> page = new Page<>(pageNum, pageSize);
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductCategory::getParentId, parentId);
        return pmsProductCategoryMapper.selectPage(page, wrapper);
    }

    //修改导航栏显示状态
    @Override
    public void navStatus(List<Integer> ids, Integer navStatus) {
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(PmsProductCategory::getId, ids);
        PmsProductCategory pmsProductCategory = new PmsProductCategory();
        pmsProductCategory.setNavStatus(navStatus);
        pmsProductCategoryMapper.update(pmsProductCategory, wrapper);
    }

    //修改显示状态
    @Override
    public void showStatus(List<Integer> ids, Integer showStatus) {
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.in(PmsProductCategory::getId, ids);
        PmsProductCategory pmsProductCategory = new PmsProductCategory();
        pmsProductCategory.setShowStatus(showStatus);
        pmsProductCategoryMapper.update(pmsProductCategory, wrapper);
    }

    //修改商品分类
    @Override
    public void update(List<Integer> id, PmsProductCategory pmsProductCategory) {
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductCategory::getId, id);
        pmsProductCategoryMapper.update(pmsProductCategory, wrapper);
    }

    //根据id获取商品分类
    @Override
    public PmsProductCategory selectById(Integer id) {
        return pmsProductCategoryMapper.selectById(id);
    }

    //查询所有一级分类 parentId=0
    @Override
    public List<PmsProductCategory> selectAll() {
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductCategory::getParentId, 0);
        return pmsProductCategoryMapper.selectList(wrapper);
    }

    //根据一级分类id查询子分类
    @Override
    public List<PmsProductCategory> selectByParentId(Integer id) {
        LambdaQueryWrapper<PmsProductCategory> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(PmsProductCategory::getParentId,id);
        return pmsProductCategoryMapper.selectList(wrapper);
    }

}
